home *** CD-ROM | disk | FTP | other *** search
-
- BlitterScreenInterLaced by Voodoo Chile of Degeneration
- v1.0 5-1-97
-
- based on the original blitterscreen from:
-
- Juergen "Rally" Fischer
-
- e-mail: fischerj@Informatik.TU-Muenchen.DE
-
-
- Is a routine that convert a 8 bit Chunky screen on an Amiga planar screen
- using blitter.
-
- I have semplified the usage a lot, I spent two days to understand the
- original blitterscreen.lha archive.
- I've included the original archive, too.
- I expanded the routine that now use a big "FAKE" to avoid the bad
- "Black hole" effect that appear in the original routine.
-
- Advantages:
- - Just two parameters for the Inizialization (BScreenInit) and
- conversion (BScreenConvert) routines.
- - A pair of Routines to simplify the usage (BScreenWait and BScreenReStart)
- - Removed all unusefull data allocation, only needed ds.x are present.
- - More clear interrupt routine in a separate include file text
- - All datas to be placed in your code ready in BScreenData.txt
- - Special Interlaced mode to avoid black pixels. (Fake Mode)
-
- Disadvantages:
- - The chunky source screen must be in chip mem, too.
-
- Missing:
- - Code Optimization ... NO WAY!!! ... I Haven't understand a byte of the
- conversion mode ;-)
- - 2x1 mode. I worked only on the 2x2 mode.
-
-
- METHOD
-
- I'll go to explain what I have understand.. maybe something miss.
- The blitterscreen is a method to convert a 8 bit chunky image in
- amiga planar mode using blitter.
- Read the original text of the author for speed and advantages
- considerations.
- Since the blitter need 3 pass to convert the image, a list of
- values to put in blitter register is stored in a special buffer
- that will be used by the interrupt routine to reinitialize the blitter
- and make the successive step.
- So you can't use the $dff002 to wait the blitter because he can be
- restarted by the interrupt routine, use the BScreenWait routine instead.
- The only disadvantage is that the sprites are needed to cover one pixel
- each two. All 8 sprites are used.
-
- The "Interlaced Method"
-
- I've added this feature to avoid the black holes in teh screen.
- If you've already seen the original blitter screen, you noticed
- that every two lines the first is normal, and the second is shifted
- right by one pixel.
- I modified the coplist handling and the IntLev3 routine so every
- frame the shift condition of all lines is switched.
- This cause the screen ti have a little flickering (different from
- the normal interlaced one) and a little loose of colour.
-
-
- Package content:
- - BScreen.i there are all the subroutines you need.
- - BScreenInt3.i is the interrupt subroutine, I used a separate file
- for it because you can insert your own level 3
- interrupt routines here.
- - BScreenData.txt Here there are all the storage definitions ready
- to be cutted and pasted in your own code.
-
-
- How to use:
- - Go to edit the initials EQU's in the BScreen.i file.
- They are ready for a 2x2 160x128 screen (i.e. full screen)
- But if you modify them maybe you'll need to change some value
- in the copperlist.
-
- - Go in BScreenData.txt and copy all the specified section in your own code.
-
- - Select in the copper list the bank color selection for the sprites.
- they'll conver the screen with their color 1 (0 is transparent),
- so find the right section in your own palette.
-
- - Call BScreenInit passing:
- This initialize the copperlists inserting sprites pointers and datas.
-
- - Use the supplied Interrupt Level 3 routine and start it.
-
- - Now You can call BScreenConvert:
- a0.l pointer to 8 bit chunky screen to convert
- a1.l pointer to planar screen
- After a little calculation (about 5-6 rastlines on a basic 1200) the
- blitter will start to make the conversion.
-
- - Use BScreenWait to wait for the conversion to finish.
- Remember:!!! DO NOT USE THE NORMAL BLITTER WAIT UING $dff002 !!!
- the blitter is restarted three times by the interrupt routine,
- so probably you'll go to wait the end of the wrong pass.
- The supplied function is just 3 instructions and waits the internal
- right flag.
-
- - Use BScreenReStart to make the same conversion you just did with
- BScreenConvert. This avoid to repeat the calculation and is just
- 5 instruction large.
- DO NOT call before the first use of BScreenConvert!!!
- REMEMBER to use BScreenWait first!!!
-
- OK, I think that's all.
- Follow the steps made in main.s for help, is very self-explanatory.
- NOTE: I use DevPac 3, so kill the first line if you use AsmOne or others.
-
-
-
- My address:
- Fabrizio Nunnari
- via Vittime di Bologna 4
- 10032 Brandizzo (TO)
- ITALY
-
- e-mail:
- nunnari.fabrizio@educ.di.unito.it
-
-
- alias:
- Voodoo Chile / DeGeNeRaTiOn
- All done with : A1200 KS3.0 - 420M HD - External low density Drive
-
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- Check out for our last music disk:
- '...in death of disco' on Aminet:
-
- IdodDisk1.lha demo/sound 594K 28+A MeTaL MuSiC DiSk By DeGeNeRaTiOn
- IdodDisk2.lha demo/sound 641K 28+A MeTaL MuSiC DiSk By DeGeNeRaTiOn
-